package cn.zyb.system.listener;

import cn.zyb.system.service.IPermissionScanService;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * @author zyb
 * @version 1.0.0
 * @date 2022年07月20日 21:54:53
 * @packageName cn.zyb.system.listener
 * @className PermissionScanInitListener
 * @describe TODO
 */
@WebListener //监听器实在项目启动的时候就会执行 - 扫描注解的逻辑卸载这里面
//程序一启动就会创建上下文对象ServletContext - ServletContextListener就起作用了
//自动创建对象并调用contextInitialized上下文的初始化方法
public class PermissionScanInitListener implements ServletContextListener {

  @Autowired
  private IPermissionScanService permissionScanService;

  @Override
  public void contextInitialized(ServletContextEvent sce) {

    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("权限注解扫描开始...");
        //扫描包 - 扫描类 - 扫描接口方法 - 扫描注解 - 解析注解
        // -  获取注解上的参数：name，sn【自定义注解上】，url【XxxMapping注解上】
        permissionScanService.scanPermission();

        System.out.println("权限注解扫描完毕...");
      }
    }).start();
  }
}
